{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://ibm.box.com/shared/static/cw2c7r3o20w9zn8gkecaeyjhgw3xdgbj.png\" width=\"400\" align=\"center\"></a>\n",
    "\n",
    "<h1><center>Non Linear Regression Analysis</center></h1>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If the data shows a curvy trend, then linear regression will not produce very accurate results when compared to a non-linear regression because, as the name implies, linear regression presumes that the data is linear. \n",
    "Let's learn about non linear regressions and apply an example on python. In this notebook, we fit a non-linear model to the datapoints corrensponding to China's GDP from 1960 to 2014."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2 id=\"importing_libraries\">Importing required libraries</h2>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Though Linear regression is very good to solve many problems, it cannot be used for all datasets. First recall how linear regression, could model a dataset. It models a linear relation between a dependent variable y and independent variable x. It had a simple equation, of degree 1, for example y = $2x$ + 3."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(-5.0, 5.0, 0.1)\n",
    "\n",
    "##You can adjust the slope and intercept to verify the changes in the graph\n",
    "y = 2*(x) + 3\n",
    "y_noise = 2 * np.random.normal(size=x.size)\n",
    "ydata = y + y_noise\n",
    "#plt.figure(figsize=(8,6))\n",
    "plt.plot(x, ydata,  'bo')\n",
    "plt.plot(x, y, 'r') \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "normal(loc=0.0, scale=1.0, size=None)\n",
       "\n",
       "Draw random samples from a normal (Gaussian) distribution.\n",
       "\n",
       "The probability density function of the normal distribution, first\n",
       "derived by De Moivre and 200 years later by both Gauss and Laplace\n",
       "independently [2]_, is often called the bell curve because of\n",
       "its characteristic shape (see the example below).\n",
       "\n",
       "The normal distributions occurs often in nature.  For example, it\n",
       "describes the commonly occurring distribution of samples influenced\n",
       "by a large number of tiny, random disturbances, each with its own\n",
       "unique distribution [2]_.\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "loc : float or array_like of floats\n",
       "    Mean (\"centre\") of the distribution.\n",
       "scale : float or array_like of floats\n",
       "    Standard deviation (spread or \"width\") of the distribution.\n",
       "size : int or tuple of ints, optional\n",
       "    Output shape.  If the given shape is, e.g., ``(m, n, k)``, then\n",
       "    ``m * n * k`` samples are drawn.  If size is ``None`` (default),\n",
       "    a single value is returned if ``loc`` and ``scale`` are both scalars.\n",
       "    Otherwise, ``np.broadcast(loc, scale).size`` samples are drawn.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "out : ndarray or scalar\n",
       "    Drawn samples from the parameterized normal distribution.\n",
       "\n",
       "See Also\n",
       "--------\n",
       "scipy.stats.norm : probability density function, distribution or\n",
       "    cumulative density function, etc.\n",
       "\n",
       "Notes\n",
       "-----\n",
       "The probability density for the Gaussian distribution is\n",
       "\n",
       ".. math:: p(x) = \\frac{1}{\\sqrt{ 2 \\pi \\sigma^2 }}\n",
       "                 e^{ - \\frac{ (x - \\mu)^2 } {2 \\sigma^2} },\n",
       "\n",
       "where :math:`\\mu` is the mean and :math:`\\sigma` the standard\n",
       "deviation. The square of the standard deviation, :math:`\\sigma^2`,\n",
       "is called the variance.\n",
       "\n",
       "The function has its peak at the mean, and its \"spread\" increases with\n",
       "the standard deviation (the function reaches 0.607 times its maximum at\n",
       ":math:`x + \\sigma` and :math:`x - \\sigma` [2]_).  This implies that\n",
       "`numpy.random.normal` is more likely to return samples lying close to\n",
       "the mean, rather than those far away.\n",
       "\n",
       "References\n",
       "----------\n",
       ".. [1] Wikipedia, \"Normal distribution\",\n",
       "       http://en.wikipedia.org/wiki/Normal_distribution\n",
       ".. [2] P. R. Peebles Jr., \"Central Limit Theorem\" in \"Probability,\n",
       "       Random Variables and Random Signal Principles\", 4th ed., 2001,\n",
       "       pp. 51, 51, 125.\n",
       "\n",
       "Examples\n",
       "--------\n",
       "Draw samples from the distribution:\n",
       "\n",
       ">>> mu, sigma = 0, 0.1 # mean and standard deviation\n",
       ">>> s = np.random.normal(mu, sigma, 1000)\n",
       "\n",
       "Verify the mean and the variance:\n",
       "\n",
       ">>> abs(mu - np.mean(s)) < 0.01\n",
       "True\n",
       "\n",
       ">>> abs(sigma - np.std(s, ddof=1)) < 0.01\n",
       "True\n",
       "\n",
       "Display the histogram of the samples, along with\n",
       "the probability density function:\n",
       "\n",
       ">>> import matplotlib.pyplot as plt\n",
       ">>> count, bins, ignored = plt.hist(s, 30, density=True)\n",
       ">>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *\n",
       "...                np.exp( - (bins - mu)**2 / (2 * sigma**2) ),\n",
       "...          linewidth=2, color='r')\n",
       ">>> plt.show()\n",
       "\u001b[0;31mType:\u001b[0m      builtin_function_or_method\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.normal?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Non-linear regressions are a relationship between independent variables $x$ and a dependent variable $y$ which result in a non-linear function modeled data. Essentially any relationship that is not linear can be termed as non-linear, and is usually represented by the polynomial of $k$ degrees (maximum power of $x$). \n",
    "\n",
    "$$ \\ y = a x^3 + b x^2 + c x + d \\ $$\n",
    "\n",
    "Non-linear functions can have elements like exponentials, logarithms, fractions, and others. For example: $$ y = \\log(x)$$\n",
    "    \n",
    "Or even, more complicated such as :\n",
    "$$ y = \\log(a x^3 + b x^2 + c x + d)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's take a look at a cubic function's graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(-5.0, 5.0, 0.1)\n",
    "\n",
    "##You can adjust the slope and intercept to verify the changes in the graph\n",
    "y = 1*(x**3) + 1*(x**2) + 1*x + 3\n",
    "y_noise = 20 * np.random.normal(size=x.size)\n",
    "ydata = y + y_noise\n",
    "plt.plot(x, ydata,  'bo')\n",
    "plt.plot(x, y, 'r') \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, this function has $x^3$ and $x^2$ as independent variables. Also, the graphic of this function is not a straight line over the 2D plane. So this is a non-linear function."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Some other types of non-linear functions are:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Quadratic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ Y = X^2 $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(-5.0, 5.0, 0.1)\n",
    "\n",
    "##You can adjust the slope and intercept to verify the changes in the graph\n",
    "\n",
    "y = np.power(x,2)\n",
    "y_noise = 2 * np.random.normal(size=x.size)\n",
    "ydata = y + y_noise\n",
    "plt.plot(x, ydata,  'bo')\n",
    "plt.plot(x, y, 'r') \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exponential"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "An exponential function with base c is defined by $$ Y = a + b c^X$$ where b ≠0, c > 0 , c ≠1, and x is any real number. The base, c, is constant and the exponent, x, is a variable. \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.arange(-5.0, 5.0, 0.1)\n",
    "\n",
    "##You can adjust the slope and intercept to verify the changes in the graph\n",
    "\n",
    "Y= np.exp(X)\n",
    "\n",
    "plt.plot(X,Y) \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logarithmic\n",
    "\n",
    "The response $y$ is a results of applying logarithmic map from input $x$'s to output variable $y$. It is one of the simplest form of __log()__: i.e. $$ y = \\log(x)$$\n",
    "\n",
    "Please consider that instead of $x$, we can use $X$, which can be polynomial representation of the $x$'s. In general form it would be written as  \n",
    "\\begin{equation}\n",
    "y = \\log(X)\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/ipykernel_launcher.py:3: RuntimeWarning: invalid value encountered in log\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.arange(-5.0, 5.0, 0.1)\n",
    "\n",
    "Y = np.log(X)\n",
    "\n",
    "plt.plot(X,Y) \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sigmoidal/Logistic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ Y = a + \\frac{b}{1+ c^{(X-d)}}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.arange(-5.0, 5.0, 0.1)\n",
    "\n",
    "\n",
    "Y = 1-4/(1+np.power(3, X-2))\n",
    "\n",
    "plt.plot(X,Y) \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"ref2\"></a>\n",
    "# Non-Linear Regression example"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For an example, we're going to try and fit a non-linear model to the datapoints corresponding to China's GDP from 1960 to 2014. We download a dataset with two columns, the first, a year between 1960 and 2014, the second, China's corresponding annual gross domestic income in US dollars for that year. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2019-10-02 06:09:08 URL:https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/china_gdp.csv [1218/1218] -> \"china_gdp.csv\" [1]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Year</th>\n",
       "      <th>Value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1960</td>\n",
       "      <td>5.918412e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1961</td>\n",
       "      <td>4.955705e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1962</td>\n",
       "      <td>4.668518e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1963</td>\n",
       "      <td>5.009730e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1964</td>\n",
       "      <td>5.906225e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1965</td>\n",
       "      <td>6.970915e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1966</td>\n",
       "      <td>7.587943e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1967</td>\n",
       "      <td>7.205703e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1968</td>\n",
       "      <td>6.999350e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1969</td>\n",
       "      <td>7.871882e+10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Year         Value\n",
       "0  1960  5.918412e+10\n",
       "1  1961  4.955705e+10\n",
       "2  1962  4.668518e+10\n",
       "3  1963  5.009730e+10\n",
       "4  1964  5.906225e+10\n",
       "5  1965  6.970915e+10\n",
       "6  1966  7.587943e+10\n",
       "7  1967  7.205703e+10\n",
       "8  1968  6.999350e+10\n",
       "9  1969  7.871882e+10"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "#downloading dataset\n",
    "!wget -nv -O china_gdp.csv https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/china_gdp.csv\n",
    "    \n",
    "df = pd.read_csv(\"china_gdp.csv\")\n",
    "df.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Did you know?__ When it comes to Machine Learning, you will likely be working with large datasets. As a business, where can you host your data? IBM is offering a unique opportunity for businesses, with 10 Tb of IBM Cloud Object Storage: [Sign up now for free](http://cocl.us/ML0101EN-IBM-Offer-CC)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plotting the Dataset ###\n",
    "This is what the datapoints look like. It kind of looks like an either logistic or exponential function. The growth starts off slow, then from 2005 on forward, the growth is very significant. And finally, it decelerate slightly in the 2010s."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     1960\n",
       "1     1961\n",
       "2     1962\n",
       "3     1963\n",
       "4     1964\n",
       "5     1965\n",
       "6     1966\n",
       "7     1967\n",
       "8     1968\n",
       "9     1969\n",
       "10    1970\n",
       "11    1971\n",
       "12    1972\n",
       "13    1973\n",
       "14    1974\n",
       "15    1975\n",
       "16    1976\n",
       "17    1977\n",
       "18    1978\n",
       "19    1979\n",
       "20    1980\n",
       "21    1981\n",
       "22    1982\n",
       "23    1983\n",
       "24    1984\n",
       "25    1985\n",
       "26    1986\n",
       "27    1987\n",
       "28    1988\n",
       "29    1989\n",
       "30    1990\n",
       "31    1991\n",
       "32    1992\n",
       "33    1993\n",
       "34    1994\n",
       "35    1995\n",
       "36    1996\n",
       "37    1997\n",
       "38    1998\n",
       "39    1999\n",
       "40    2000\n",
       "41    2001\n",
       "42    2002\n",
       "43    2003\n",
       "44    2004\n",
       "45    2005\n",
       "46    2006\n",
       "47    2007\n",
       "48    2008\n",
       "49    2009\n",
       "50    2010\n",
       "51    2011\n",
       "52    2012\n",
       "53    2013\n",
       "54    2014\n",
       "Name: Year, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"Year\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970,\n",
       "       1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981,\n",
       "       1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,\n",
       "       1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,\n",
       "       2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"Year\"].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,5))\n",
    "x_data, y_data = (df[\"Year\"].values, df[\"Value\"].values)\n",
    "plt.plot(x_data, y_data, 'ro')\n",
    "plt.ylabel('GDP')\n",
    "plt.xlabel('Year')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Choosing a model ###\n",
    "\n",
    "From an initial look at the plot, we determine that the logistic function could be a good approximation,\n",
    "since it has the property of starting with a slow growth, increasing growth in the middle, and then decreasing again at the end; as illustrated below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dZ3gc5dn28f+lLsu2XOSCuwAXjBu4gQmhhVATSkjoBMIbQhKSPCkQQiDlgTTS81AcU0ISWkI3JbQQWsAVbONuudtykSxLVq/X+2HXsAhZXguNRqs9f8exx+6UHZ0jy3vtzNxz3+buiIhI8koJO4CIiIRLhUBEJMmpEIiIJDkVAhGRJKdCICKS5NLCDnCg8vLyfMSIEWHHEBFJKAsXLix2934tLUu4QjBixAgWLFgQdgwRkYRiZhv3tUynhkREkpwKgYhIklMhEBFJcioEIiJJLrBCYGb3mtlOM1u6j+VmZn8yswIzW2JmRwaVRURE9i3II4L7gFNbWX4aMDL6uAq4M8AsIiKyD4EVAnd/HShpZZWzgL95xBygl5kdFFQeERFpWZj3EQwGNsdMb4nO29Z8RTO7ishRA8OGDeuQcCIiHaWpyamsa2BPTQPlNfWU1zRQUdNAeW3kuaqugYraBiYP782xI1u8J+xjCbMQWAvzWhwcwd1nAbMApkyZogEURKTTcncqahsorqijuKKW4vJadlXWURJ97K6qY3dVPaVVdZRV11NaVU95TT1NcXyyffX4Q7pcIdgCDI2ZHgIUhpRFRGS/3J3Sqnq2llazZXc1haXVbN9Tw7ayGnaU1bCzvIYde2qprm9s8f09MtPonZNB727p9O6WQX5eDrnZ6eRmp9MzK52e2Wn0yEqnR1Ya3TOjj6w0cjLTyMlIIzWlpe/PH1+YhWA2cI2ZPQxMB8rc/SOnhUREOpK7s7O8lnVFlawvrmTDrko27qpkU0k1m0uqqKht+ND6GWkpHJSbxYCeWYwf0otP9cikf89M8rp/8OjbPYPe3TLISOucLfYDKwRm9hBwPJBnZluAHwPpAO4+E3gOOB0oAKqAK4LKIiLSkl0VtazcXs7K7eWs2r6HNTsrKNhZQXnNBx/2GWkpDOvTjeF9ujE9vw9DemczpHc2g3t1Y1CvLPrkZGAWzDf1jhJYIXD3C/ez3IGvB/XzRURi7a6sY9GWUhZvLmXp1jKWFe5hW1nN+8vzumcwsn8Pzp40mEP7d+fgfjnk5+UwKDeblIBOyXQWCdf7qIjI/rg764orWbChhHnrd7NwYwkbdlUBYAaH9OvO9Pw+HD4ol8MO6snogT3o1yMz5NThUSEQkS6hsLSaN9YU8dbaXby1dhdF5bUA9MnJYPLw3pw/dRgTh+YyYUgvumfqoy+WfhsikpAaGpuYv2E3r6zcwaurilizswKAvO6ZzDikL0cf0pdp+X04OC8n4c/hB02FQEQSRk19I6+vLuL5pdv598qdlFXXk5GawvSD+3D+1KF8clQ/Rvbvrg/+A6RCICKdWkNjE28WFPPUokJeWr6DitoGcrPTOWlMfz59+ACOHdmPHJ3q+Vj02xORTmnNjnL+uWAzTy4qpKi8ltzsdE4fP5AzJgxixiF9SU/tnG3yE5EKgYh0GjX1jfxr6TYenLuJ+Rt2k55qnDC6P+ceOYQTx/TvtDdkJToVAhEJ3c49Ndw/ZyMPzN3Erso68vNyuOH0MXzuyCH07Z68zTo7igqBiISmYGc5d766jtmLt9LQ5Jw0ZgBXHDOCow/u2+Vv4upMVAhEpMMt3VrG7f8p4Pll28lMS+Hi6cO5fMYIRuTlhB0tKakQiEiHWb2jnN+/tJp/Ld1Oj6w0rjnhUC6fMUKnf0KmQiAigSssreY3L6ziiUVbyclI41snjeTKY/PpmZUedjRBhUBEAlRZ28DM19Yy6/V1OHDVsQdz9XGH0DsnI+xoEkOFQETanbvz9JJt3PLMcnaW1/LZiYO47tTRDOndLexo0gIVAhFpV2uLKvjRU0v5b8Euxg/OZealkzlyWO+wY0krVAhEpF3UNzYx6/V1/PHlNWSmp3DzWYdz0fThgQ2vKO1HhUBEPrblhXu49tHFLCvcwxnjD+LHnx1L/x5ZYceSOKkQiEibNTY5d72xjt++uIrc7HTuvPhITht/UNix5ACpEIhIm2wrq+bb/1jEnHUlnDZuID8/Z7xaAyUoFQIROWAvL9/Bdx9ZTH1jE7eeN4HPTx6iMQASmAqBiMStobGJ37y4mpmvreXwQT257aIjyVe3EAlPhUBE4lJUXss1D77D3PUlXDR9GD86cyxZ6alhx5J2oEIgIvu1dGsZX/7bAnZX1fG7L0zk3COHhB1J2pEKgYi06tkl2/juI4vo0y2DR6+ewbjBuWFHknamQiAiLXJ37nh1Lb9+YRWTh/dm5iWT6ddDvYR2RSoEIvIRDY1N3PTUMh6at4mzJw3iV+dNIDNN1wO6KhUCEfmQqroGrnnwXV5ZuZOvHX8I154yWk1DuzgVAhF5X1l1PVf8ZR6LNpdy89njuPSo4WFHkg6gQiAiABRX1HLpPfMo2FnO7Repq4hkokIgImwrq+biu+dSWFrN3V+cynGj+oUdSTqQCoFIkttWVs0Fs+ZQUlHH36+cztQRfcKOJB0sJciNm9mpZrbKzArM7PoWluea2dNmttjMlpnZFUHmEZEPiy0Cf7tymopAkgqsEJhZKnA7cBowFrjQzMY2W+3rwHJ3nwgcD/zWzNR9oUgH2F5Ww4Wz5rCroo6/XjmNIzSKWNIK8ohgGlDg7uvcvQ54GDir2ToO9LBI27TuQAnQEGAmEQF2VdRy0d1zKI4eCWgoyeQWZCEYDGyOmd4SnRfrNuAwoBB4D/iWuzc135CZXWVmC8xsQVFRUVB5RZLCnpp6Lrt3HoWl1dx7+VQVAQm0ELR0B4o3mz4FWAQMAiYBt5lZz4+8yX2Wu09x9yn9+qk1g0hbVdc1cuV981m9o5yZl0xmWr6uCUiwhWALMDRmegiRb/6xrgAe94gCYD0wJsBMIkmrobGJrz2wkIUbd/OH84/g+NH9w44knUSQhWA+MNLM8qMXgC8AZjdbZxNwEoCZDQBGA+sCzCSSlNydHz6xlP+sKuLms8dxxgTdLCYfCOw+AndvMLNrgBeAVOBed19mZldHl88EbgbuM7P3iJxK+r67FweVSSRZ/enfBfxjwWa+ceKhXDxd3UbIhwV6Q5m7Pwc812zezJjXhcCng8wgkuz+uWAzv395NedNHsJ3Th4VdhzphAK9oUxEwvX22l3c8Ph7HDsyj1+cO169iEqLVAhEuqgNxZV89YGFjMjL4faLjyQ9Vf/dpWX6yxDpgsqq6vnSX+djwD1fnELPrPSwI0knpk7nRLqYhsYmrnnoHTaXVPHA/zuK4X1zwo4knZwKgUgX8+sXVvHGmmJu/dwE3TAmcdGpIZEu5OnFhfz59XVcetRwvjB16P7fIEKchcDMhpvZp6Kvs82sR7CxRORALS/cw3WPLmHqiN7cdGbzjn5F9m2/hcDMvgw8Cvw5OmsI8GSQoUTkwJRV13P1/QvpmZ3G7RcfSUaaDvYlfvH8tXwdOAbYA+DuawB1UiLSSbg71z6ymMLSau64eDL9e2SFHUkSTDyFoDY6ngAAZpbGR3sRFZGQ3P3Gel5cvoMfnH4Yk4erS2k5cPEUgtfM7AYg28xOBh4Bng42lojEY/6GEn75/EpOGzeQLx0zIuw4kqDiKQTXA0VEBo75CpG+g24MMpSI7F9JZR3fePBdhvbO5lfnTVD3EdJm+72PIDpi2F3Rh4h0Au7OdY8upqSyjse/NkN3DsvHss9CEO0aep/XAtx9QiCJRGS/7ntrAy+v2MmPPzOWcYNzw44jCa61I4IzOyyFiMRt6dYyfvHcSj51WH8unzEi7DjSBeyzELj7xr2vzWwgMI3IEcJ8d9/eAdlEpJmquga++dC79M5J59bzJuq6gLSLeG4o+3/APOBc4Dxgjpl9KehgIvJRtzy7gvW7Kvn9+ZPok5MRdhzpIuLpdO5a4Ah33wVgZn2Bt4B7gwwmIh/28vIdPDh3E1857mBmHJIXdhzpQuJpProFKI+ZLgc2BxNHRFpSVF7L9x9bwtiDemq4SWl3rbUa+k705VZgrpk9ReQawVlEThWJSAdwd77/2BIqaht4+IJJZKalhh1JupjWTg3t7WF0bfSx11PBxRGR5h6ev5lXVu7kJ58Zy8gB6vhX2l9rrYZ+2pFBROSjNpdUccszyznm0L5cdvSIsONIF7Xfi8Vm1g+4DjgceL9bQ3c/McBcIkmvqcn53iOLMTNuPW8iKSlqKirBiOdi8QPASiAf+CmwAZgfYCYRAf7y1gbmri/hR58Zy+Be2WHHkS4snkLQ193vAerd/TV3/xJwVMC5RJLa2qIKbn0+cvfw5ycPCTuOdHHx3EdQH33eZmZnAIVERikTkQA0NjnXPbqErPRUfn7OeN09LIGLpxDcYma5wHeB/wN6At8ONJVIErvvrQ0s3Lib331hIv17arQxCV483VA/E31ZBpwQbByR5LahuJJfv7CSk8b055wjBocdR5JEazeUXefut5rZ/9FCd9Tu/s1Ak4kkmaYm57rHlpCemsLPdEpIOlBrRwQros8LOiKISLJ7YO5G5q0v4dbzJjAwV6eEpOO0dkPZ02aWCoxz92s7MJNI0iksreaX/1rJsSPz1EpIOlyrzUfdvRGY3NaNm9mpZrbKzArM7Pp9rHO8mS0ys2Vm9lpbf5ZIonJ3bnxyKU2OWglJKOJpNfSumc0GHgEq985098dbe1P0aOJ24GQiPZjON7PZ7r48Zp1ewB3Aqe6+ycz6t2EfRBLa7MWFvLJyJzedOZahfbqFHUeSUDyFoA+wC4jtUsKBVgsBkRHNCtx9HYCZPUyk59LlMetcBDzu7psA3H1nnLlFuoSSyjp++vRyJg3tpWEnJTTxNB+9oo3bHsyHxy3YAkxvts4oIN3MXiXS2+kf3f1vzTdkZlcBVwEMGzasjXFEOp9bnlnOnup6fvW5CaSqLyEJSTydzmUBV/LRTuf2N1xlS3/VzZuhphG5BnESkA28bWZz3H31h97kPguYBTBlypSPNGUVSURvrinm8Xe3cs0JhzJ6oLqXlvDE09fQ34GBwCnAa0S6lyhv9R0RW4ChMdNDiHRP0Xyd59290t2LgdeBiXFsWyShVdc1csMT75Gfl8M1Jx4adhxJcvEUgkPd/Sag0t3/CpwBjI/jffOBkWaWb2YZwAXA7GbrPAUca2ZpZtaNyKmjFYh0cX96ZQ2bSqr42TnjyErXiGMSrgPpdK7UzMYB24ER+3uTuzeY2TXAC0AqcK+7LzOzq6PLZ7r7CjN7HlgCNAF3u/vSNuyHSMJYuX0Pd72+js9PHqJB6KVTiKcQzDKz3sCNRL7Rdwduimfj7v4c8FyzeTObTf8a+HVcaUUSXFOT84PH36Nndjo3nH5Y2HFEgNb7Ghrg7jvc/e7orNeBgzsmlkjX9OC8Tby7qZTffWEivXMywo4jArR+jWCxmb1kZl+KdkMtIh/DzvIafvX8SmYc0lc9i0qn0lohGAz8BjgWWG1mT5rZ+WamMfNE2uDmZ1ZQ29DELWePUzcS0qnssxC4e6O7vxC9oWwo8BfgbGC9mT3QUQFFuoLXVhfx9OJCvn78oRzcr3vYcUQ+JJ7mo7h7HZGuIVYAe4CxQYYS6Upq6hu56cmlHNwvh6uP12U26XxaLQRmNszMrjWzd4BniDQDPcvdj+iQdCJdwO3/KWBTSRW3nD2OzDTdMyCdT2utht4icp3gEeAqd9cANSIHqGBnBTNfW8u5RwzWPQPSabV2H8EPgNfdXX37iLSBu3PTk0vJTk/lhjN0z4B0Xq1dLH5NRUCk7Z5ctJW31+3i+6eNIa97ZthxRPYprovFInJgyqrqueWZFRwxrBcXTlXX6dK57bcQmFl+PPNE5AO3vrCS3VV13HL2OFI0zoB0cvEcETzWwrxH2zuISFfx7qbdPDhvE5fPyOfwQbopXzq/1loNjSEyGE2umZ0bs6gnMQPUiMgHGhqb+OETS+nfI5PvfHpU2HFE4tJaq6HRwJlAL+AzMfPLgS8HGUokUf3t7Y0s37aH2y86ku6Z8XTuKxK+ff6luvtTwFNmdrS7v92BmUQS0vayGn774io+Oaofp48fGHYckbjF85WlwMxuIDIYzfvrxzFmsUhSufnZ5dQ3OTefdbg6lZOEEk8heAp4A3gZaAw2jkhien11Ec8u2cZ3Th7F8L45YccROSDxFIJu7v79wJOIJKia+kZ+9NRSDs7L4SvHqVM5STzxNB99xsxODzyJSIK689W1bNhVxc3qVE4SVDyF4FtEikGNme0xs3Iz2xN0MJFEsK6ogjtfXctnJw7imEPVqZwkpv2eGnL3Hh0RRCTRuDs3PbWUzPQUbjxTncpJ4oqniwkzs0vM7Kbo9FAzmxZ8NJHObfbiQv5bsIvrTh1D/x66x1ISVzynhu4AjgYuik5XALcHlkgkAZRV1XPzM8uZOLQXF01Tp3KS2OJpNTTd3Y80s3cB3H23mWUEnEukU/v1iyspqazjviumkapO5STBxXNEUG9mqYADmFk/oCnQVCKd2DubdvPA3E18ccYIxg1Wp3KS+OIpBH8CngD6m9nPgDeBnweaSqSTqm9s4obH32NAjyy+++nRYccRaRfxtBp6wMwWAicBBpzt7isCTybSCd375npWbi9n5iWT1amcdBmtdUPdJ2ZyJ/BQ7DJ3LwkymEhns7mkij+8vIZPHTaAUw4fEHYckXbT2leahUSuCxgwDNgdfd0L2ARolDJJGu7Oj2cvwwx+qk7lpItpbfD6fHc/GHgB+Iy757l7XyJjFDzeUQFFOoNn39vGKyt38u1PjWJwr+yw44i0q3guFk919+f2Trj7v4Djgosk0rmUVdXzk9nLGTe4J1ccMyLsOCLtLp5CUGxmN5rZCDMbbmY/BHbFs3EzO9XMVplZgZld38p6U82s0czOize4SEf55fMrKams5ZfnTiAtNZ7/MiKJJZ6/6guBfkSakD4J9I/Oa1X03oPbgdOAscCFZjZ2H+v9isgpKJFOZd76Eh6at4krP5Gvewaky4qn+WgJkR5ID9Q0oMDd1wGY2cPAWcDyZut9A3gMmNqGnyESmNqGRn7w+BIG98rm2ydrIHrpuvZbCMxsFPA9PjpU5Yn7eetgYHPM9BZgerNtDwbOAU6klUJgZlcBVwEMG6Z+XaRj3PZKAWuLKrnviql0y9A9A9J1xfPX/QgwE7ibAxuqsqX2dd5s+g/A9929sbXmeO4+C5gFMGXKlObbEGl3K7bt4c5X13LuEYM5fnT/sOOIBCqeQtDg7ne2YdtbgKEx00OAwmbrTAEejhaBPOB0M2tw9yfb8PNE2kVjk3P9Y0vIzU7npjM/cllLpMuJpxA8bWZfI3KxuHbvzDjuLJ4PjDSzfGArcAEfdGW9dxvv35RmZvcBz6gISNj+8t/1LN5Sxp8uPILeOepoV7q+eArBF6PP18bMc6DVUbrdvcHMriHSGigVuNfdl5nZ1dHlM9uQVyRQG4or+c2LqzhpTH8+M+GgsOOIdIh4Wg21uSuJ6I1ozzWb12IBcPfL2/pzRNpDU5Nz3WNLSE9J4ZZzxqkbCUka8QxV2S16Q9ms6PRIMzsz+GgiHev+uRuZt76Em84cy0G56kZCkkc8N5T9BagDZkSntwC3BJZIJASbS6r45b9W8slR/fj8lCFhxxHpUPEUgkPc/VagHsDdq2m5aahIQmpqcr7/2BJSzPjFueN1SkiSTjyFoM7MsvlgqMpDiGk9JJLoHpi7kbfW7uIHp49Rz6KSlOJpNfRj4HlgqJk9ABwDXB5kKJGOsqG4kp8/FzkldNE03bUuySmeVkMvmdk7wFFETgl9y92LA08mErDGJud7jywmPdW49XMTdEpIkla8HagcB3yCyOmhdCI3l4kktHveXMeCjbv5/fkTGZibFXYckdDE03z0DuBq4D1gKfAVM7s96GAiQVq1vZzfvLiaUw4fwNmTBocdRyRU8RwRHAeMc/e9F4v/SqQoiCSkmvpGvvXwu/TMSuNn56iVkEg8rYZWERm8fq+hwJJg4ogE77cvrmLl9nJ+fd5E8rpnhh1HJHTxHBH0BVaY2bzo9FTgbTObDeDunw0qnEh7+29BMXe9sZ5LjxrOCWPUvbQIxFcIfhR4CpEOUFpVx3f/uZiD++Vww+mHhR1HpNOIp/noa2Y2HBjp7i9Hby5Lc/fy4OOJtA9357pHl7Crspa7LjuG7IzUsCOJdBrxtBr6MvAo8OforCFEBrEXSRj3z9nIi8t3cN0pYxg/RIPQi8SK52Lx14ncTbwHwN3XADq5KgljxbY93PzsCo4b1Y8rP9HmXtVFuqx4CkGtu9ftnTCzND469rBIp1RV18A3HnqX3Ox0fvuFiaSkqKmoSHPxFILXzOwGINvMTiYymP3TwcYS+fjcnRufXMraogp+/4VJaioqsg/xFILrgSIiN5F9hciIYzcGGUqkPfxj/mYef2cr3zxxJJ8YmRd2HJFOK55WQ01m9iTwpLsXdUAmkY9tWWEZP5q9jE8cmsc3TxoZdhyRTm2fRwQW8RMzKwZWAqvMrMjMdF+BdGp7aur52gPv0KdbBn+8YBKpui4g0qrWTg39D5HWQlPdva+79wGmA8eY2bc7JJ3IAWpqcr7zj0Vs3V3NbRcdQV9dFxDZr9YKwWXAhe6+fu8Md18HXBJdJtLp/PHfa3h5xU5uOnMsU0b0CTuOSEJorRCktzQATfQ6QXpwkUTa5qXlO/jjv9dw3uQhXHb08LDjiCSM1gpBXRuXiXS4gp0VfPsfi5gwJJdbzh6nrqVFDkBrrYYmmtmeFuYboOGcpNPYXVnHlX+dT2ZaCjMvmUxWuvoREjkQ+ywE7q7/TdLp1TU0cfX9C9lWWsNDV01nUK/ssCOJJJx4xywW6XTcnR89tZS560v4w/mTmDxcF4dF2iKeO4tFOqW73ljHw/M3c80Jh3L2ERp3WKStVAgkIT21aCs/f24lZ4w/iO+cPCrsOCIJTYVAEs5ba4v53iOLmZbfRz2KirQDFQJJKKu2l/OVvy9kRN8c7rp0iloIibSDQAuBmZ1qZqvMrMDMrm9h+cVmtiT6eMvMJgaZRxLbxl2VXHrPXLplpHLfl6aR2033NYq0h8AKgZmlArcDpwFjgQvNbGyz1dYDx7n7BOBmYFZQeSSxbS+r4ZJ75lLf2MT9V05nsJqJirSbII8IpgEF7r4uOsLZw8BZsSu4+1vuvjs6OYfIeMgiH1JSWccl98ylpKKO+66YxsgBPcKOJNKlBFkIBgObY6a3ROfty5XAv1paYGZXmdkCM1tQVKQhEZJJaVUdl94zl00lVdz9xalMHNor7EgiXU6QhaClphwtjnVsZicQKQTfb2m5u89y9ynuPqVfv37tGFE6s9KqyJHAmh0V/PnSyRx9SN+wI4l0SUHeWbwFGBozPQQobL6SmU0A7gZOc/ddAeaRBFJWVc8l98xl9fYK/nzZZE4Y3T/sSCJdVpBHBPOBkWaWb2YZwAXA7NgVzGwY8DhwqbuvDjCLJJBdFbVcfM+cSBG4VEVAJGiBHRG4e4OZXQO8AKQC97r7MjO7Orp8JvAjoC9wR7Tb4AZ3nxJUJun8tpfVcPHdc9haWs2syyZzvIqASODMvcXT9p3WlClTfMGCBWHHkABs3FXJxXfPpbSqnnsvn8q0fHUiJ9JezGzhvr5oq/dR6RTe21LGFffNp7GpiQe/PJ0JQ9Q6SKSjqIsJCd1/Vu3k/Flvk5mWwiNXH60iINLBdEQgoXp43iZ++ORSxgzswV8un0r/nhr8TqSjqRBIKBoam/jFv1Zyz5vr+eSoftxx8ZF0z9Sfo0gY9D9POlxZVT3XPPQOb6wp5vIZI7jxjMNIS9VZSpGwqBBIh1q5fQ9fvf8dtuyu4pfnjueCacPCjiSS9FQIpMM8unALNz75Hj2y0nnwy0cxdYSah4p0BioEErjqukZ++vQyHp6/maMP7ssfL5xE/x66KCzSWagQSKCWbi3jmw+/y/riSr52/CF85+RRuh4g0smoEEggGpucu95Yx29fXEXfnEweuHI6Mw7NCzuWiLRAhUDaXcHOcq59dAnvbirl1MMH8otzx9M7JyPsWCKyDyoE0m7qG5u46411/OHlNXTLSOWPF0zisxMHEe1QUEQ6KRUCaRfzN5Rw4xNLWbWjnNPGDeR/zxpHvx6ZYccSkTioEMjHsrO8hlufX8WjC7cwuFc2sy6dzKcPHxh2LBE5ACoE0iY19Y3c/cY67nx1LXWNTXz1+EP4xomH0i1Df1IiiUb/a+WANDQ28fi7W/nDS6spLKvhlMMHcP1ph5GflxN2NBFpIxUCiUtTk/PMe9v4w0urWVdcyYQhufzu/EkcdbAGlBdJdCoE0qr6xiZmLyrkjlcLWFtUyegBPfjzpZP59NgBag0k0kWoEEiLKmobeGTBZu5+Yz1bS6sZM7AH/3fhEZw+/iBSU1QARLoSFQL5kA3Flfx9zkb+OX8z5bUNTBnem5vPPpwTRvfXEYBIF6VCINQ1NPHyih08OHcTbxYUk5ZinDnhIK44Jp+JQzVspEhXp0KQpNydpVv38Ng7W5i9uJCSyjoG98rmuyeP4gtThzJAQ0aKJA0VgiSzekc5zyzZxrNLCllbVElGWgonjx3AeUcO4ZOj+un8v0gSUiHo4pqanHc3l/LS8h28tHw7a4sqSTGYnt+XL30inzPHDyK3W3rYMUUkRCoEXVBxRS1vrinmtdVFvLGmiOKKOtJSjOkH9+GLM0Zw6riBGhhGRN6nQtAFlFTWMX9DCXPW7eLttbtYub0cgD45GXxyZB4njOnP8aP7k5utb/4i8lEqBAmmsclZvaOcxZtLWbS5lPkbSlhbVAlAZloKU0f04dpTBvGJQ/MYPziXFJ3zF5H9UCHoxGrqG1mzo4IV2/ewbGsZSwv3sLxwD9X1jQDkZqczeXhvPjd5CFOG92Hi0Fwy01JDTi0iiUaFoBMoq6pn/a5K1hdXsGZHBQU7I48Nuypp8sg6ORmpjB3Uk/OnDmXi0FwmDulFfl6ObvISkY9NhaAD1IMhgRAAAAnsSURBVNQ3UlhazdbSarburmbL7mo2lVS9/yiprHt/3bQUY3jfbowc0J3PTBzEmIE9GD2wByP65ug0j4gEQoWgjdydPTUNlFTWsauilqLyWoqjzzv21LKjvIYde2rZXlbN7qr6D703NcUY1CuLYX26ccrhA8jPy2FE3xzy83IY3jeHjLSUkPZKRJJRoIXAzE4F/gikAne7+y+bLbfo8tOBKuByd38nyEx7uTu1DU1U1jZQWdtIRW0DFbUNlNfUU14Ted5T00BZdT1lVfWUVtexu6qe0qrI8+7KOhr2nreJkWKQ1z2T/j0zGZSbxeThvTgoN5uBPbMY3Dubwb2yGZibRXqqPuxFpHMIrBCYWSpwO3AysAWYb2az3X15zGqnASOjj+nAndHndvfqqp3c/Mxyquoao48G6hs/+kHeXFZ6CrnZ6eRmp9OrWwb5eTkc2S2D3jkZ9M3JoE9OBn27Z5LXPYN+PTLp0y2DNH3Ii0gCCfKIYBpQ4O7rAMzsYeAsILYQnAX8zd0dmGNmvczsIHff1t5hemanM2ZgT7plpEYemWl0z0wjJyOVnMw0emSl0T0zne5ZafTMSqNndjo9stLUCkdEurwgC8FgYHPM9BY++m2/pXUGAx8qBGZ2FXAVwLBhw9oU5shhvTny4t5teq+ISFcW5DmMlpq4ND8XE886uPssd5/i7lP69evXLuFERCQiyEKwBRgaMz0EKGzDOiIiEqAgC8F8YKSZ5ZtZBnABMLvZOrOByyziKKAsiOsDIiKyb4FdI3D3BjO7BniBSPPRe919mZldHV0+E3iOSNPRAiLNR68IKo+IiLQs0PsI3P05Ih/2sfNmxrx24OtBZhARkdapwbuISJJTIRARSXIqBCIiSc4ip+kTh5kVARvDztEGeUBx2CFCkIz7nYz7DMm534m0z8PdvcUbsRKuECQqM1vg7lPCztHRknG/k3GfITn3u6vss04NiYgkORUCEZEkp0LQcWaFHSAkybjfybjPkJz73SX2WdcIRESSnI4IRESSnAqBiEiSUyEIgZl9z8zczPLCzhI0M/u1ma00syVm9oSZ9Qo7U5DM7FQzW2VmBWZ2fdh5gmZmQ83sP2a2wsyWmdm3ws7UUcws1czeNbNnws7ycakQdDAzG0pkHOdNYWfpIC8B49x9ArAa+EHIeQITM073acBY4EIzGxtuqsA1AN9198OAo4CvJ8E+7/UtYEXYIdqDCkHH+z1wHS2MxNYVufuL7t4QnZxDZPChrur9cbrdvQ7YO053l+Xu29z9nejrciIfjIPDTRU8MxsCnAHcHXaW9qBC0IHM7LPAVndfHHaWkHwJ+FfYIQK0rzG4k4KZjQCOAOaGm6RD/IHIF7qmsIO0h0DHI0hGZvYyMLCFRT8EbgA+3bGJgtfaPrv7U9F1fkjkNMIDHZmtg8U1BndXZGbdgceA/3H3PWHnCZKZnQnsdPeFZnZ82HnagwpBO3P3T7U038zGA/nAYjODyCmSd8xsmrtv78CI7W5f+7yXmX0ROBM4ybv2jStJOQa3maUTKQIPuPvjYefpAMcAnzWz04EsoKeZ3e/ul4Scq810Q1lIzGwDMMXdE6XnwjYxs1OB3wHHuXtR2HmCZGZpRC6InwRsJTJu90XuvizUYAGyyLeavwIl7v4/YefpaNEjgu+5+5lhZ/k4dI1AgnYb0AN4ycwWmdnM/b0hUUUviu8dp3sF8M+uXASijgEuBU6M/vsuin5TlgSiIwIRkSSnIwIRkSSnQiAikuRUCEREkpwKgYhIklMhEBFJcioE0qHMrOIA1z++vXp3NLOfmNn32mlb95nZeW1876SWmliaWY6Z7TKz3GbznzSzLxzA9geZ2aP7WWefv1cz25AMPePKB1QIRDreJOAjhcDdK4EXgbP3zosWhU8AcRVDM0tz90J3b1ORkuSkQiChiH4jfdXMHo2OV/BA9C7VvX36rzSzN4FzY96TY2b3mtn8aD/wZ0XnX25mT5nZ89GxAH4c854fRue9DIyOmX9IdP2FZvaGmY2Jzr/PzP5kZm+Z2bq93/ot4jYzW25mzwL9Y7Y12cxei27rBTM7KDr/VTP7lZnNM7PVZnasmWUA/wucH7356vxmv5qHgAtips8Bnnf3KjObFs31bvR5dMz+P2JmTwMvmtkIM1saXTYiun/vRB8zYrbd0yJjRCw3s5lm9pHPAzO7JJp/kZn92SJdbUtX4+566NFhD6Ai+nw8UEakP54U4G0i33yziPTgOZJIJ27/BJ6JvufnwCXR172IdOeQA1wObAP6AtnAUmAKMBl4D+gG9AQKiHQHAPBvYGT09XTglejr+4BHopnGEulWGiIF6SUgFRgElALnAenAW0C/6HrnA/dGX78K/Db6+nTg5ejry4Hb9vH7yQB2An2j088DZ0Rf9wTSoq8/BTwWs70tQJ/o9AhgafR1NyAr+noksCDm918DHBzdp5eA86LLNgB5wGHA00B6dP4dwGVh/w3p0f4PdTonYZrn7lsAzGwRkQ+wCmC9u6+Jzr8fuCq6/qeJdPa19zx/FjAs+vold98Vfc/jRIoKwBPuXhWdPzv63B2YATwSPQgByIzJ9aS7NwHLzWxAdN4ngYfcvREoNLNXovNHA+OIdKEBkQ/VbTHb2tsJ28Lo/rXK3euiOc8zs8eInEZ6Mbo4F/irmY0k0qtpesxbX3L3khY2mQ7cZmaTgEZgVMyyee6+DsDMHiLyO4u9tnASkWI6P7pv2USKlHQxKgQSptqY14188Pe4r35PDPicu6/60Eyz6S28x6Prt7StFKDU3SfFkSu2a+mWtmXAMnc/ej/bit2//XkIuDG67afcvT46/2bgP+5+jkX6/n815j2V+9jWt4EdwEQi+10Ts6yl31ksA/7q7l12VDmJ0DUC6WxWAvlmdkh0+sKYZS8A34i5lnBEzLKTzayPmWUTudj6X+B14BwzyzazHsBnADzSX/56M/t8dDtmZhP3k+t14AKLjFN7EHBCdP4qoJ+ZHR3dVrqZHb6fbZUT6YhvX/5D5DTO14kUhb1yifRqCpHTQfHIBbZFj3AuJXLEstc0M8uPXhs4H3iz2Xv/TeTIpD9A9Pc7PM6fKwlEhUA6FXevIXIq6NnoxeKNMYtvJnKqY0n0YujNMcveBP4OLCJy7nyBR4ZQ/MfeecAbMetfDFxpZouBZex/SMkngDVErjncCbwWzVtH5FrBr6LbWkTktFNr/gOM3cfFYqIf2o8RuebxesyiW4FfmNl/+fAHemvuAL5oZnOInBaKPXJ4G/glkWsq66P7GJtjOZEjkxfNbAmR6wgHxflzJYGo91FJeGZ2OZGxHa4JO4tIItIRgYhIktMRgYhIktMRgYhIklMhEBFJcioEIiJJToVARCTJqRCIiCS5/w88S56JL7VaaAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.arange(-5.0, 5.0, 0.1)\n",
    "Y = 1.0 / (1.0 + np.exp(-X))\n",
    "\n",
    "plt.plot(X,Y) \n",
    "plt.ylabel('Dependent Variable')\n",
    "plt.xlabel('Indepdendent Variable')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fe9568795c0>]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X, np.exp(-X))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "The formula for the logistic function is the following:\n",
    "\n",
    "$$ \\hat{Y} = \\frac1{1+e^{\\beta_1(X-\\beta_2)}}$$\n",
    "\n",
    "$\\beta_1$: Controls the curve's steepness,\n",
    "\n",
    "$\\beta_2$: Slides the curve on the x-axis."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Building The Model ###\n",
    "Now, let's build our regression model and initialize its parameters. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(x, Beta_1, Beta_2):\n",
    "     y = 1 / (1 + np.exp(-Beta_1*(x-Beta_2)))\n",
    "     return y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets look at a sample sigmoid line that might fit with the data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fe956888cc0>]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "beta_1 = 0.10\n",
    "beta_2 = 1990.0\n",
    "\n",
    "#logistic function\n",
    "Y_pred = sigmoid(x_data, beta_1 , beta_2)\n",
    "\n",
    "#plot initial prediction against datapoints\n",
    "plt.plot(x_data, Y_pred*15000000000000.)\n",
    "plt.plot(x_data, y_data, 'ro')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our task here is to find the best parameters for our model. Lets first normalize our x and y:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Lets normalize our data\n",
    "xdata =x_data/max(x_data)\n",
    "ydata =y_data/max(y_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### How we find the best parameters for our fit line?\n",
    "we can use __curve_fit__ which uses non-linear least squares to fit our sigmoid function, to data. Optimal values for the parameters so that the sum of the squared residuals of sigmoid(xdata, *popt) - ydata is minimized.\n",
    "\n",
    "popt are our optimized parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " beta_1 = 690.447527, beta_2 = 0.997207\n"
     ]
    }
   ],
   "source": [
    "from scipy.optimize import curve_fit\n",
    "popt, pcov = curve_fit(sigmoid, xdata, ydata)\n",
    "#print the final parameters\n",
    "print(\" beta_1 = %f, beta_2 = %f\" % (popt[0], popt[1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m\n",
       "\u001b[0mcurve_fit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mxdata\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mydata\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mp0\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0msigma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mabsolute_sigma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mcheck_finite\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mbounds\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0minf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0mjac\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "Use non-linear least squares to fit a function, f, to data.\n",
       "\n",
       "Assumes ``ydata = f(xdata, *params) + eps``\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "f : callable\n",
       "    The model function, f(x, ...).  It must take the independent\n",
       "    variable as the first argument and the parameters to fit as\n",
       "    separate remaining arguments.\n",
       "xdata : An M-length sequence or an (k,M)-shaped array for functions with k predictors\n",
       "    The independent variable where the data is measured.\n",
       "ydata : M-length sequence\n",
       "    The dependent data --- nominally f(xdata, ...)\n",
       "p0 : None, scalar, or N-length sequence, optional\n",
       "    Initial guess for the parameters.  If None, then the initial\n",
       "    values will all be 1 (if the number of parameters for the function\n",
       "    can be determined using introspection, otherwise a ValueError\n",
       "    is raised).\n",
       "sigma : None or M-length sequence or MxM array, optional\n",
       "    Determines the uncertainty in `ydata`. If we define residuals as\n",
       "    ``r = ydata - f(xdata, *popt)``, then the interpretation of `sigma`\n",
       "    depends on its number of dimensions:\n",
       "\n",
       "        - A 1-d `sigma` should contain values of standard deviations of\n",
       "          errors in `ydata`. In this case, the optimized function is\n",
       "          ``chisq = sum((r / sigma) ** 2)``.\n",
       "\n",
       "        - A 2-d `sigma` should contain the covariance matrix of\n",
       "          errors in `ydata`. In this case, the optimized function is\n",
       "          ``chisq = r.T @ inv(sigma) @ r``.\n",
       "\n",
       "          .. versionadded:: 0.19\n",
       "\n",
       "    None (default) is equivalent of 1-d `sigma` filled with ones.\n",
       "absolute_sigma : bool, optional\n",
       "    If True, `sigma` is used in an absolute sense and the estimated parameter\n",
       "    covariance `pcov` reflects these absolute values.\n",
       "\n",
       "    If False, only the relative magnitudes of the `sigma` values matter.\n",
       "    The returned parameter covariance matrix `pcov` is based on scaling\n",
       "    `sigma` by a constant factor. This constant is set by demanding that the\n",
       "    reduced `chisq` for the optimal parameters `popt` when using the\n",
       "    *scaled* `sigma` equals unity. In other words, `sigma` is scaled to\n",
       "    match the sample variance of the residuals after the fit.\n",
       "    Mathematically,\n",
       "    ``pcov(absolute_sigma=False) = pcov(absolute_sigma=True) * chisq(popt)/(M-N)``\n",
       "check_finite : bool, optional\n",
       "    If True, check that the input arrays do not contain nans of infs,\n",
       "    and raise a ValueError if they do. Setting this parameter to\n",
       "    False may silently produce nonsensical results if the input arrays\n",
       "    do contain nans. Default is True.\n",
       "bounds : 2-tuple of array_like, optional\n",
       "    Lower and upper bounds on parameters. Defaults to no bounds.\n",
       "    Each element of the tuple must be either an array with the length equal\n",
       "    to the number of parameters, or a scalar (in which case the bound is\n",
       "    taken to be the same for all parameters.) Use ``np.inf`` with an\n",
       "    appropriate sign to disable bounds on all or some parameters.\n",
       "\n",
       "    .. versionadded:: 0.17\n",
       "method : {'lm', 'trf', 'dogbox'}, optional\n",
       "    Method to use for optimization.  See `least_squares` for more details.\n",
       "    Default is 'lm' for unconstrained problems and 'trf' if `bounds` are\n",
       "    provided. The method 'lm' won't work when the number of observations\n",
       "    is less than the number of variables, use 'trf' or 'dogbox' in this\n",
       "    case.\n",
       "\n",
       "    .. versionadded:: 0.17\n",
       "jac : callable, string or None, optional\n",
       "    Function with signature ``jac(x, ...)`` which computes the Jacobian\n",
       "    matrix of the model function with respect to parameters as a dense\n",
       "    array_like structure. It will be scaled according to provided `sigma`.\n",
       "    If None (default), the Jacobian will be estimated numerically.\n",
       "    String keywords for 'trf' and 'dogbox' methods can be used to select\n",
       "    a finite difference scheme, see `least_squares`.\n",
       "\n",
       "    .. versionadded:: 0.18\n",
       "kwargs\n",
       "    Keyword arguments passed to `leastsq` for ``method='lm'`` or\n",
       "    `least_squares` otherwise.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "popt : array\n",
       "    Optimal values for the parameters so that the sum of the squared\n",
       "    residuals of ``f(xdata, *popt) - ydata`` is minimized\n",
       "pcov : 2d array\n",
       "    The estimated covariance of popt. The diagonals provide the variance\n",
       "    of the parameter estimate. To compute one standard deviation errors\n",
       "    on the parameters use ``perr = np.sqrt(np.diag(pcov))``.\n",
       "\n",
       "    How the `sigma` parameter affects the estimated covariance\n",
       "    depends on `absolute_sigma` argument, as described above.\n",
       "\n",
       "    If the Jacobian matrix at the solution doesn't have a full rank, then\n",
       "    'lm' method returns a matrix filled with ``np.inf``, on the other hand\n",
       "    'trf'  and 'dogbox' methods use Moore-Penrose pseudoinverse to compute\n",
       "    the covariance matrix.\n",
       "\n",
       "Raises\n",
       "------\n",
       "ValueError\n",
       "    if either `ydata` or `xdata` contain NaNs, or if incompatible options\n",
       "    are used.\n",
       "\n",
       "RuntimeError\n",
       "    if the least-squares minimization fails.\n",
       "\n",
       "OptimizeWarning\n",
       "    if covariance of the parameters can not be estimated.\n",
       "\n",
       "See Also\n",
       "--------\n",
       "least_squares : Minimize the sum of squares of nonlinear functions.\n",
       "scipy.stats.linregress : Calculate a linear least squares regression for\n",
       "                         two sets of measurements.\n",
       "\n",
       "Notes\n",
       "-----\n",
       "With ``method='lm'``, the algorithm uses the Levenberg-Marquardt algorithm\n",
       "through `leastsq`. Note that this algorithm can only deal with\n",
       "unconstrained problems.\n",
       "\n",
       "Box constraints can be handled by methods 'trf' and 'dogbox'. Refer to\n",
       "the docstring of `least_squares` for more information.\n",
       "\n",
       "Examples\n",
       "--------\n",
       ">>> import numpy as np\n",
       ">>> import matplotlib.pyplot as plt\n",
       ">>> from scipy.optimize import curve_fit\n",
       "\n",
       ">>> def func(x, a, b, c):\n",
       "...     return a * np.exp(-b * x) + c\n",
       "\n",
       "Define the data to be fit with some noise:\n",
       "\n",
       ">>> xdata = np.linspace(0, 4, 50)\n",
       ">>> y = func(xdata, 2.5, 1.3, 0.5)\n",
       ">>> np.random.seed(1729)\n",
       ">>> y_noise = 0.2 * np.random.normal(size=xdata.size)\n",
       ">>> ydata = y + y_noise\n",
       ">>> plt.plot(xdata, ydata, 'b-', label='data')\n",
       "\n",
       "Fit for the parameters a, b, c of the function `func`:\n",
       "\n",
       ">>> popt, pcov = curve_fit(func, xdata, ydata)\n",
       ">>> popt\n",
       "array([ 2.55423706,  1.35190947,  0.47450618])\n",
       ">>> plt.plot(xdata, func(xdata, *popt), 'r-',\n",
       "...          label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))\n",
       "\n",
       "Constrain the optimization to the region of ``0 <= a <= 3``,\n",
       "``0 <= b <= 1`` and ``0 <= c <= 0.5``:\n",
       "\n",
       ">>> popt, pcov = curve_fit(func, xdata, ydata, bounds=(0, [3., 1., 0.5]))\n",
       ">>> popt\n",
       "array([ 2.43708906,  1.        ,  0.35015434])\n",
       ">>> plt.plot(xdata, func(xdata, *popt), 'g--',\n",
       "...          label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))\n",
       "\n",
       ">>> plt.xlabel('x')\n",
       ">>> plt.ylabel('y')\n",
       ">>> plt.legend()\n",
       ">>> plt.show()\n",
       "\u001b[0;31mFile:\u001b[0m      ~/conda/envs/python/lib/python3.6/site-packages/scipy/optimize/minpack.py\n",
       "\u001b[0;31mType:\u001b[0m      function\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "curve_fit?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we plot our resulting regression model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(1960, 2015, 55)\n",
    "x = x/max(x)\n",
    "plt.figure(figsize=(8,5))\n",
    "y = sigmoid(x, *popt)\n",
    "plt.plot(xdata, ydata, 'ro', label='data')\n",
    "plt.plot(x,y, linewidth=3.0, label='fit')\n",
    "plt.legend(loc='best')\n",
    "plt.ylabel('GDP')\n",
    "plt.xlabel('Year')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Practice\n",
    "Can you calculate what is the accuracy of our model?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# write your code here\n",
    "msk = np.random.rand(len(df)) < 0.8\n",
    "train_x = xdata[msk]\n",
    "test_x = xdata[~msk]\n",
    "train_y = ydata[msk]\n",
    "test_y = ydata[~msk]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "popt, pcov = curve_fit(sigmoid, train_x, train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_hat = sigmoid(test_x, *popt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean absolute error: 0.03\n",
      "Residual sum of squares (MSE): 0.00\n",
      "R2-score: 0.96\n"
     ]
    }
   ],
   "source": [
    "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(y_hat - test_y)))\n",
    "print(\"Residual sum of squares (MSE): %.2f\" % np.mean((y_hat - test_y) ** 2))\n",
    "from sklearn.metrics import r2_score\n",
    "print(\"R2-score: %.2f\" % r2_score(y_hat , test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mCall signature:\u001b[0m  \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabsolute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mType:\u001b[0m            ufunc\n",
       "\u001b[0;31mString form:\u001b[0m     <ufunc 'absolute'>\n",
       "\u001b[0;31mFile:\u001b[0m            ~/conda/envs/python/lib/python3.6/site-packages/numpy/__init__.py\n",
       "\u001b[0;31mDocstring:\u001b[0m      \n",
       "absolute(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])\n",
       "\n",
       "Calculate the absolute value element-wise.\n",
       "\n",
       "``np.abs`` is a shorthand for this function.\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "x : array_like\n",
       "    Input array.\n",
       "out : ndarray, None, or tuple of ndarray and None, optional\n",
       "    A location into which the result is stored. If provided, it must have\n",
       "    a shape that the inputs broadcast to. If not provided or `None`,\n",
       "    a freshly-allocated array is returned. A tuple (possible only as a\n",
       "    keyword argument) must have length equal to the number of outputs.\n",
       "where : array_like, optional\n",
       "    Values of True indicate to calculate the ufunc at that position, values\n",
       "    of False indicate to leave the value in the output alone.\n",
       "**kwargs\n",
       "    For other keyword-only arguments, see the\n",
       "    :ref:`ufunc docs <ufuncs.kwargs>`.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "absolute : ndarray\n",
       "    An ndarray containing the absolute value of\n",
       "    each element in `x`.  For complex input, ``a + ib``, the\n",
       "    absolute value is :math:`\\sqrt{ a^2 + b^2 }`.\n",
       "    This is a scalar if `x` is a scalar.\n",
       "\n",
       "Examples\n",
       "--------\n",
       ">>> x = np.array([-1.2, 1.2])\n",
       ">>> np.absolute(x)\n",
       "array([ 1.2,  1.2])\n",
       ">>> np.absolute(1.2 + 1j)\n",
       "1.5620499351813308\n",
       "\n",
       "Plot the function over ``[-10, 10]``:\n",
       "\n",
       ">>> import matplotlib.pyplot as plt\n",
       "\n",
       ">>> x = np.linspace(start=-10, stop=10, num=101)\n",
       ">>> plt.plot(x, np.absolute(x))\n",
       ">>> plt.show()\n",
       "\n",
       "Plot the function over the complex plane:\n",
       "\n",
       ">>> xx = x + 1j * x[:, np.newaxis]\n",
       ">>> plt.imshow(np.abs(xx), extent=[-10, 10, -10, 10], cmap='gray')\n",
       ">>> plt.show()\n",
       "\u001b[0;31mClass docstring:\u001b[0m\n",
       "Functions that operate element by element on whole arrays.\n",
       "\n",
       "To see the documentation for a specific ufunc, use `info`.  For\n",
       "example, ``np.info(np.sin)``.  Because ufuncs are written in C\n",
       "(for speed) and linked into Python with NumPy's ufunc facility,\n",
       "Python's help() function finds this page whenever help() is called\n",
       "on a ufunc.\n",
       "\n",
       "A detailed explanation of ufuncs can be found in the docs for :ref:`ufuncs`.\n",
       "\n",
       "Calling ufuncs:\n",
       "===============\n",
       "\n",
       "op(*x[, out], where=True, **kwargs)\n",
       "Apply `op` to the arguments `*x` elementwise, broadcasting the arguments.\n",
       "\n",
       "The broadcasting rules are:\n",
       "\n",
       "* Dimensions of length 1 may be prepended to either array.\n",
       "* Arrays may be repeated along dimensions of length 1.\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "*x : array_like\n",
       "    Input arrays.\n",
       "out : ndarray, None, or tuple of ndarray and None, optional\n",
       "    Alternate array object(s) in which to put the result; if provided, it\n",
       "    must have a shape that the inputs broadcast to. A tuple of arrays\n",
       "    (possible only as a keyword argument) must have length equal to the\n",
       "    number of outputs; use `None` for uninitialized outputs to be\n",
       "    allocated by the ufunc.\n",
       "where : array_like, optional\n",
       "    Values of True indicate to calculate the ufunc at that position, values\n",
       "    of False indicate to leave the value in the output alone.  Note that if\n",
       "    an uninitialized return array is created via the default ``out=None``,\n",
       "    then the elements where the values are False will remain uninitialized.\n",
       "**kwargs\n",
       "    For other keyword-only arguments, see the :ref:`ufunc docs <ufuncs.kwargs>`.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "r : ndarray or tuple of ndarray\n",
       "    `r` will have the shape that the arrays in `x` broadcast to; if `out` is\n",
       "    provided, it will be returned. If not, `r` will be allocated and\n",
       "    may contain uninitialized values. If the function has more than one\n",
       "    output, then the result will be a tuple of arrays.\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.absolute?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "jupyter": {
     "source_hidden": true
    }
   },
   "source": [
    "Double-click __here__ for the solution.\n",
    "\n",
    "<!-- Your answer is below:\n",
    "    \n",
    "# split data into train/test\n",
    "msk = np.random.rand(len(df)) < 0.8\n",
    "train_x = xdata[msk]\n",
    "test_x = xdata[~msk]\n",
    "train_y = ydata[msk]\n",
    "test_y = ydata[~msk]\n",
    "\n",
    "# build the model using train set\n",
    "popt, pcov = curve_fit(sigmoid, train_x, train_y)\n",
    "\n",
    "# predict using test set\n",
    "y_hat = sigmoid(test_x, *popt)\n",
    "\n",
    "# evaluation\n",
    "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(y_hat - test_y)))\n",
    "print(\"Residual sum of squares (MSE): %.2f\" % np.mean((y_hat - test_y) ** 2))\n",
    "from sklearn.metrics import r2_score\n",
    "print(\"R2-score: %.2f\" % r2_score(y_hat , test_y) )\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Want to learn more?</h2>\n",
    "\n",
    "IBM SPSS Modeler is a comprehensive analytics platform that has many machine learning algorithms. It has been designed to bring predictive intelligence to decisions made by individuals, by groups, by systems – by your enterprise as a whole. A free trial is available through this course, available here: <a href=\"http://cocl.us/ML0101EN-SPSSModeler\">SPSS Modeler</a>\n",
    "\n",
    "Also, you can use Watson Studio to run these notebooks faster with bigger datasets. Watson Studio is IBM's leading cloud solution for data scientists, built by data scientists. With Jupyter notebooks, RStudio, Apache Spark and popular libraries pre-packaged in the cloud, Watson Studio enables data scientists to collaborate on their projects without having to install anything. Join the fast-growing community of Watson Studio users today with a free account at <a href=\"https://cocl.us/ML0101EN_DSX\">Watson Studio</a>\n",
    "\n",
    "<h3>Thanks for completing this lesson!</h3>\n",
    "\n",
    "<h4>Author:  <a href=\"https://ca.linkedin.com/in/saeedaghabozorgi\">Saeed Aghabozorgi</a></h4>\n",
    "<p><a href=\"https://ca.linkedin.com/in/saeedaghabozorgi\">Saeed Aghabozorgi</a>, PhD is a Data Scientist in IBM with a track record of developing enterprise level applications that substantially increases clients’ ability to turn data into actionable knowledge. He is a researcher in data mining field and expert in developing advanced analytic methods like machine learning and statistical modelling on large datasets.</p>\n",
    "\n",
    "<hr>\n",
    "\n",
    "<p>Copyright &copy; 2018 <a href=\"https://cocl.us/DX0108EN_CC\">Cognitive Class</a>. This notebook and its source code are released under the terms of the <a href=\"https://bigdatauniversity.com/mit-license/\">MIT License</a>.</p>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python",
   "language": "python",
   "name": "conda-env-python-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
